package com.sojson.util.mq.rabbit.immit.interfaces;

import org.springframework.amqp.core.MessageDeliveryMode;
import org.springframework.amqp.core.MessageProperties;

import com.sojson.constant.Constant;
import com.sojson.util.mq.rabbit.interfaces.IRabbitBaseUtil;

/**
 * Rabbit生产消息工具类接口
 * 
 * @author liu
 * @date 2022-06-16
 */
public interface IRabbitMsgUtil extends IRabbitBaseUtil {

    /**
     * 获取 消息基础属性
     * 
     * @return
     */
    default MessageProperties getBaseBasicProperties() {
        // public String contentType; =========// 消息的内容类型
        // public String contentEncoding; =====// 消息内容的编码
        // public Map<String, Object> headers; // 消息的头
        // public Integer deliveryMode; =======// 消息是否持久化，1为否，2为是
        // public Integer priority; ===========// 消息的优先级
        // public String correlationId; =======// 关联id
        // public String replyTo; =============// 消息回复的队列名称
        // public String expiration; ==========// 消息的有效时间(单位: 毫秒)
        // public String messageId; ===========// 消息的id
        // public Date timestamp; =============// 消息的时间戳
        // public String type; ================// 类型
        // public String userId; ==============// 用户id
        // public String appId; ===============// 应用id
        // public String clusterId; ===========// 集群id
        MessageProperties props = new MessageProperties();
        props.setContentType(Constant.DEFAULT_ENCODING);
        props.setDeliveryMode(MessageDeliveryMode.PERSISTENT);

        return props;
    }

    /**
     * 获取 消息属性
     * 
     * @return
     */
    default MessageProperties getBasicProperties() {
        MessageProperties props = getBaseBasicProperties();
        // public String expiration; ==========// 消息的有效时间(单位: 毫秒)
        // props.setExpiration("3000");

        return props;
    }

}